import type { PageParam, PageResult } from '@vben/request';
import type { Dayjs } from 'dayjs';

import { requestClient } from '#/api/request';

export namespace TechnicianApi {
  /** 技师信息信息 */
  export interface Technician {
    id: number; // 主键ID
    technicianCode?: string; // 技师编号
    employeeId?: number; // 员工ID
    userId: number; // 用户ID
    name?: string; // 姓名
    gender?: string; // 性别
    phone: string; // 手机号
    idCard: string; // 身份证号
    birthDate: string | Dayjs; // 出生日期
    hireDate?: string | Dayjs; // 入职日期
    department?: string; // 部门
    position: string; // 职位
    orgId?: number; // 组织ID
    storeId?: number; // 门店ID
    skillLevel?: string; // 技能等级
    specialties: string; // 专长项目
    certifications: string; // 专业认证
    languages: string; // 语言能力
    workExperience: number; // 工作经验(年)
    status?: string; // 状态
    workloadLevel: string; // 工作负荷等级
    salary: number; // 基本工资
    commissionRate: number; // 提成比例
    hourlyRate: number; // 小时费率
    overallRating: number; // 综合评分
    ratingBreakdown: string; // 评分明细节
    workSchedule: string; // 工作排班JSON
    preferredServices: string; // 偏好服务JSON
    serviceTypes: string; // 服务类型
    totalServicesCount: number; // 累计服务次数
    totalServiceHours: number; // 累计服务时长(小时)
    lastServiceDate: string | Dayjs; // 最后服务日期
    currentRoomId: number; // 当前房间ID
    currentServiceId: number; // 当前服务ID
    currentServiceStartTime: string | Dayjs; // 当前服务开始时间
    monthlyPerformanceScore: number; // 月度绩效评分
    quarterlyPerformanceScore: number; // 季度绩效评分
    yearlyPerformanceScore: number; // 年度绩效评分
  }
}

/** 查询技师信息分页 */
export function getTechnicianPage(params: PageParam) {
  return requestClient.get<PageResult<TechnicianApi.Technician>>(
    '/spa/technician/page',
    { params },
  );
}

/** 查询技师信息详情 */
export function getTechnician(id: number) {
  return requestClient.get<TechnicianApi.Technician>(
    `/spa/technician/get?id=${id}`,
  );
}

/** 新增技师信息 */
export function createTechnician(data: TechnicianApi.Technician) {
  return requestClient.post('/spa/technician/create', data);
}

/** 修改技师信息 */
export function updateTechnician(data: TechnicianApi.Technician) {
  return requestClient.put('/spa/technician/update', data);
}

/** 删除技师信息 */
export function deleteTechnician(id: number) {
  return requestClient.delete(`/spa/technician/delete?id=${id}`);
}

/** 导出技师信息 */
export function exportTechnician(params: any) {
  return requestClient.download('/spa/technician/export-excel', { params });
}
